<template>
    <div class="shopcar-container">
        <div class="goods-list">
            <!-- 商品列表项区域 -->
            <div class="mui-card" v-for = "(item,i) in goodslist" :key="item.id">
                <div class="mui-card-content">
                    <div class="mui-card-content-inner">
                        <!-- 这里的双向数据绑定v-model是没用的，因为getters不能改store数据的 -->
                        <mt-switch v-model="$store.getters.getGoodsSelected[item.id]"
                        @change="selectedChanged(item.id,$store.getters.getGoodsSelected[item.id])"></mt-switch>
                        <img :src="item.thumb_path" >
                        <div class="info">
                            <h1>{{item.title}}</h1>
                            <p>
                                <span class="price">￥{{item.sell_price}}</span>
                                <numbox :count="$store.getters.getGoodsCount[item.id]" :goodsid="item.id"></numbox>
                                <!-- 记得阻止默认行为 这里的item.id用来删除car的，上面索引i用来删goodslist-->
                                <a href="" @click.prevent= "remove(item.id,i)">删除</a>
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </div>


        <!-- 结算区域 -->
        <div class="mui-card">
            <div class="mui-card-content">
                <div class="mui-card-content-inner jiesuan">
                    <div class="left">
                        <p>总计(不含运费)</p>
                        <p>已勾选商品<span class="red">{{$store.getters.getGoodsCountAndAmount.count}}</span>件，总价：￥<span class="red">{{$store.getters.getGoodsCountAndAmount.amount}}</span></p>
                    </div>
                   <mt-button type="danger">去结算</mt-button>
                </div> 
                
            </div>
        </div>

        <p>{{$store.getters.getGoodsSelected}}</p>
    </div>
</template>

<script>
    import numbox from "../subcomponents/shopcar_numbox.vue";
    export default {
        data() {
            return {
                goodslist: [] //购物车所有商品数据
            }
        },
        created() {
            this.getGoodsList();
        },
        methods: {
            // 获取商品列表
            getGoodsList() {
                var idArr = []
                this.$store.state.car.forEach(item => idArr.push(item.id));
                if(idArr.length <=0) return;//即若购物车没有东西就立即返回不要去api找了
                this.$http
                .get('api/goods/getshopcarlist/'+idArr.join(","))//中间以,隔开
                .then(result => {
                    if(result.body.status === 0) {
                      this.goodslist = result.body.message;
                    }
                })

            },
            
            remove(id,index) {
                this.goodslist.splice(index,1);
                this.$store.commit("removeFromCar", id);
                
               
            },
            selectedChanged(id,val) {
                //每当点击开关，数据同步到store中
                this.$store.commit("updateGoodsSelected",{id:id,selected:val});
                // console.log(id+"------"+val);
            }
        },
        components: {
            numbox
        }
    }

</script>

<style lang="scss" scoped>
    .shopcar-container {
         background-color: #eee;
         /* 这里是解决与顶部之间留空的问题  */
         overflow: hidden;
         .goods-list {
           .mui-card-content-inner {
             display: flex;
             align-items: center;
           }
           img {
             width: 60px;
           }
           h1 {
             font-size: 13px;
           }
           .info {
             display: flex;
             flex-direction: column;
             justify-content: space-between;
             .price {
               color: red;
               font-weight: bold;
             }
           }
         }
         .jiesuan {
             display: flex;
             justify-content: space-between;
             align-items: center;
             .red {
                 color: red;
                 font-weight: bold;
                 font-size: 16px;
             }
         }
  }

</style>